package com.forum.controller;

import com.forum.dto.UserDTO;
import com.forum.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

/**
 * 内部用户服务控制器 - 仅供服务间调用
 * 注意：此控制器方法的返回值不会被包装到统一响应对象中
 */
@Slf4j
@RestController
@RequestMapping("/internal")
@RequiredArgsConstructor
public class InternalUserController {
    
    private final UserService userService;
    
    /**
     * 验证用户凭据
     *
     * @param username 用户名
     * @param password 密码
     * @return 用户ID，认证失败返回null
     */
    @PostMapping("/validate-credentials")
    public Long validateCredentials(@RequestParam("username") String username, @RequestParam("password") String password) {
        log.info("内部API - 验证用户凭据: {}", username);
        // 确保直接返回Long值，不要包装
        Long userId = userService.validateCredentials(username, password);
        log.info("验证结果 - 用户: {}, 结果: {}", username, userId != null ? "成功" : "失败");
        return userId;
    }
    
    /**
     * 根据用户名获取用户ID
     *
     * @param username 用户名
     * @return 用户ID
     */
    @GetMapping("/get-user-id-by-username")
    public Long getUserIdByUsername(@RequestParam("username") String username) {
        log.info("内部API - 根据用户名获取用户ID: {}", username);
        // 确保直接返回Long值，不要包装
        return userService.getUserIdByUsername(username);
    }
    
    /**
     * 根据用户ID获取用户详情
     *
     * @param userId 用户ID
     * @return 用户详情
     */
    @GetMapping("/get-user-details/{userId}")
    public UserDTO getUserDetails(@PathVariable("userId") Long userId) {
        log.info("内部API - 获取用户详情: {}", userId);
        // 确保直接返回UserDTO对象，不要包装
        return userService.getUserDetailsWithRoles(userId);
    }
} 